Please enable JavaScript to view this website.

Skip to main content
Experimental proof of concept

Edge Mesh is a throwaway proof-of-concept / learning experiment built on top of the Greengrass reference implementation. It is not a supported or maintained deliverable and may be removed. The reference implementation itself is long-lived; Edge Mesh is not.

Edge Mesh

The Edge Mesh extends Milwaukee Tool's asset-scanning and remote-control reach beyond a single connected gateway. One cellular-connected core (a CompuLab iMX8 running AWS IoT Greengrass) forms a small WiFi mesh with a fleet of cheap Raspberry Pi mesh-nodes, so a jobsite or warehouse can be covered by spreading out Pis instead of relying on one gateway's radio range.

The one thing to remember: the mesh is a side-channel, not an uplink

The 10.88.0.0/24 mesh is an isolated local island. It is not an internet connection. Every device still reaches AWS through the Greengrass core device. The mesh exists so the nodes can talk to each other: Pis forward scans to the core, the core relays tool-control commands out to a Pi, and nodes report network topology for the live map. If you keep this one idea in mind, everything else on these pages will make sense.

The big picture

A Pi scans a tool's BLE advertisement, builds the expected payload, and publishes it to the core's local Moquette MQTT broker over the mesh. The core's MQTT Bridge relays that topic to AWS IoT Core over cellular (or WiFi, where the core has a connection). The mesh carries the scan from Pi to core; only the core has the link out.

The mesh does three things

Everything the Edge Mesh does is one of these three jobs. Each links to its walk-through on the Data Path page.

#CapabilityIn one sentence
1Asset-scan uploadPis scan nearby BLE tools and forward detections to the core, which fans them into the cloud, multiplying scan coverage.
2Client-device provisioningA Pi obtains its AWS IoT certificate over the mesh, relayed through the core, without ever touching the internet directly.
3EdgeMesh Bluetooth controlAn operator drives a ONE-KEY tool from some remote software client; the core relays opaque OpenLink bytes over the mesh to whichever Pi is in Bluetooth range of the tool.

Choose your path

The Edge Mesh spans three engineering disciplines. Read the page that matches what you're here to do; you do not need to read all of them if you're not interested.

If you are a…Start hereBecause
Firmware / kernel engineerHardware & RFArchitectureThe radio constants (IBSS, channel 1, fixed BSSID), the kernel-module cross-build, and the brcmfmacath9k_htc interop wall are firmware/kernel territory.
Electrical engineerHardware & RFThe iMX8 + Pi hardware, the ath9k_htc dongle decision, and why the onboard Intel/Broadcom radios cannot be on the mesh.
Software engineerData PathArchitectureThe scan-to-cloud path, the provisioning relay, the tool-control flow, and the Greengrass component map.
Operator / bringing up hardwarethe runbooks (see below)Step-by-step procedures to image, provision, and verify a fleet.

Glossary: the 8 terms you'll hit first

One line each; the full glossary lives in tools/mesh/ARCHITECTURE.md.

TermMeaning
coreThe one CompuLab iMX8 that runs Greengrass and has the cellular uplink; reserved at 10.88.0.1 on the mesh.
mesh-nodeA Raspberry Pi on the mesh (mesh-node-N gets 10.88.0.(N+2), starting at 10.88.0.2); scans BLE and relays tool control.
bat0The virtual network interface batman-adv creates. It is the address you actually ping; the raw WiFi interface is plumbing underneath.
TQ"Transmit Quality," batman's link-quality metric, 0-255, higher is better. The health-portal map colors links by TQ.
IBSSWiFi ad-hoc mode (peer-to-peer, no access point). The radio mode the mesh runs on.
RP2The asset-scan payload format the Pi builds from a BLE advertisement and the core forwards to the cloud.
MPBIDThe unique device identifier; used directly as the AWS IoT thing name. Mesh-Pi MPBIDs begin with FFFC.
OpenLinkMilwaukee Tool proprietary protocol; the mesh relays OpenLink packets opaquely.

Where the code lives

The docs on this site are primarily conceptual and meant for quick onboarding. The source of truth lives next to the code in the iot-edge repository:

  • tools/mesh/ARCHITECTURE.md: the authoritative layered-model explainer (radio → batman-adv → IP), the boot chain, and the full glossary. Read this first when you touch the mesh.
  • tools/mesh/README.md: Pi mesh bring-up how-to.
  • tools/mesh/COMPULAB-IMX8.md: the CompuLab core: kernel-module cross-build, the radio trap, and provisioning.
  • tools/mesh/runbooks/: step-by-step operational procedures (core bring-up, Pi imaging, Pi provisioning, kernel cross-build, client-device provisioning, full-fleet bring-up, EdgeMesh Bluetooth control).
  • README.md (repo root): the overall Greengrass runtime, provisioning, and component map.
  • Device Provisioning: the two-phase certificate model the mesh Pis reuse for their own client-device provisioning.
  • Asset Scans: the asset-scan payload format the mesh adheres to and forwards.
  • Device Shadows: device state over MQTT shadow topics; the mesh Pis carry a per-Pi config shadow relayed through the core.